<?php

require_once dirname(__FILE__).'/../lib/consultaGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/consultaGeneratorHelper.class.php';

/**
 * consulta actions.
 *
 * @package    catalogo
 * @subpackage consulta
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class consultaActions extends autoConsultaActions
{
  public function executeList_publicar(sfWebRequest $request)
  {
    $a = $this->getRoute()->getObject();
       
    $this->forward404Unless($a);
    
    $a->setActiva(!$a->getActiva());
    
    if (($a->getConsultaId() && $pregunta = $a->getConsultaArticulo()) && ($orden = $pregunta->getOrden()))
      $a->setOrden($orden);
    $a->save();
    
    if ($a->getActiva())
        $this->notificarVendedorConsulta($a);
 
    $this->getUser()->setFlash('notice', 'La consulta seleccionada ha sido des/publicada.');
 
    $this->redirect('consulta_articulo');
  }
  
  public function executeList_responder(sfWebRequest $request)
  {
    $this->form = $this->configuration->getForm();
    $consulta = $this->form->getObject();
    $consulta->setConsultaId($request->getParameter('id'));
    $this->consulta_articulo = $consulta;
  }
  
  public function executeBatchPublicar(sfWebRequest $request)
  {
    $ids = $request->getParameter('ids');

    $q = Doctrine_Query::create()
      ->from('ConsultaArticulo c')
      ->whereIn('c.id', $ids);
 
    foreach ($q->execute() as $a)
    {
      $a->setActiva(!$a->getActiva());
      $a->save();
      if ($a->getActiva())
        $this->notificarVendedorConsulta($a);
    }
 
    $this->getUser()->setFlash('notice', 'Las consultas seleccionadas han sido des/publicadas correctamente.');
 
    $this->redirect('consulta_articulo');
  }
  
  protected function notificarVendedorConsulta($consulta)
  {

    $articulo = $consulta->getArticulo();
    $email_vendedor = $articulo->getUsuario()->getEmail();
    
    $nombre_interesado = $consulta->getNombre();
    $email_interesado  = $consulta->getEmail();
    $texto_interesado  = $consulta->getTexto();
        
    $username = ($articulo->getUsuario()->getNombre() == '' ? 
                    substr($email_vendedor, 0, strpos($email_vendedor, '@')) : 
                    $articulo->getUsuario()->getNombre()
                );
                
    $href_rta = $this->getController()
                                    ->genUrl(array('sf_route' => 'responder_consulta', 
                                                   'sf_subject' => $consulta));
                    
    $enlace_responder = '<a href="' . $_SERVER["SERVER_NAME"].'/'.substr($href_rta, strpos($href_rta, '/', 1)) . 
                    '">aquí</a>';                                         
                
    $enlace_pqn = '<a href="' . $_SERVER["SERVER_NAME"] . '">PorQueNuevo</a>';    
    
    // send an email to the user
    $body = <<<EOF
Hola {$username},

Han realizado una consulta sobre tu anuncio.
Estos son los detalles de la consulta:

---------------------------------------------------
De: {$nombre_interesado} / {$email_interesado} 

{$texto_interesado}

---------------------------------------------------

Podés responder la consulta haciendo click {$enlace_responder}.

Muchas gracias por elegirnos.
El equipo de {$enlace_pqn}.
EOF;

    $message = $this->getMailer()->compose();
    $message->setSubject('Recibiste una consulta sobre el anuncio "' . $articulo->getTitulo() . '"');
    $message->setTo($email_vendedor);
    $message->setFrom(array('info@porquenuevo.com.ar' => 'PorQueNuevo'));
    $message->setReplyTo($email_interesado);
    $message->setBody(nl2br($body), 'text/html');
 
    $this->getMailer()->send($message);
  }  
}
